package com.boomshake.service;

import com.boomshake.vo.CommissionDetailVO;
import com.boomshake.vo.DistributorStatisticsVO;
import com.boomshake.vo.DistributorTreeVO;
import com.boomshake.vo.DistributorVO;

import java.util.List;

/**
 * 分销员服务接口
 *
 * @author BoomShake
 * @date 2024-12-16
 */
public interface DistributorService {

    /**
     * 获取分销员树形结构
     * @param storeId 门店ID（可选）
     * @param level 分销等级（可选）
     * @param status 状态（可选）
     * @return 分销员树形结构列表
     */
    List<DistributorTreeVO> getDistributorTree(Long storeId, Integer level, Integer status);

    /**
     * 获取分销员详情
     * @param distributorId 分销员ID
     * @return 分销员详情
     */
    DistributorTreeVO getDistributorDetail(Long distributorId);

    /**
     * 获取分销员佣金明细
     * @param distributorId 分销员ID
     * @param page 页码
     * @param size 每页大小
     * @return 佣金明细
     */
    CommissionDetailVO getDistributorCommissionDetails(Long distributorId, Integer page, Integer size);

    /**
     * 更新分销员状态
     * @param distributorId 分销员ID
     * @param status 新状态
     * @return 是否成功
     */
    boolean updateDistributorStatus(Long distributorId, Integer status);

    /**
     * 获取分销员统计信息
     * @param storeId 门店ID（可选）
     * @param level 分销等级（可选）
     * @param status 状态（可选）
     * @return 统计信息
     */
    DistributorStatisticsVO getDistributorStatistics(Long storeId, Integer level, Integer status);

    /**
     * 获取门店分销员列表
     * 
     * @param storeId 门店ID
     * @return 分销员列表
     */
    List<DistributorVO> getStoreDistributors(Long storeId);
} 